#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//#define mm(x) x*x
//#define mm1(x) (x)*(x)
//#define mm2(x) ((x)*(x))
//#define mm3(x) ((x)+(x))
//#define mm4(x) (x)+(x)
//
//int main()
//{
//	printf("%d ", mm(3 + 2));
//	printf("%d ", mm1(3 + 2));
//	printf("%d ", mm2(3 + 2));
//	printf("%d ", mm(3 + 2) * 2);
//	printf("%d ", mm1(3 + 2) * 2);
//	printf("%d ", mm2(3 + 2) * 2);
//	printf("%d ", mm3(3 + 2) * 2);
//	printf("%d ", mm4(3 + 2) * 2);
//	return 0;
//}

//#define MS(num,odd,even) (odd = (num & 0x55555555)<<1)^(even = (num & 0xaaaaaaaa)>>1)
//
//int main()
//{
//	int num;
//	scanf("%d", &num);
//	int odd;
//	int even;
//	int p = MS(num, odd, even);
//	printf("%d\n", p);
//	return 0;
//}

//struct State
//{
//	int a;
//	char arr[10];
//	char n;
//};
//
//#define OFFSETOF(type,member) &(((type*)0)->member)
//
//int main()
//{
//	printf("%d ", OFFSETOF(struct State, a));
//	printf("%d ", OFFSETOF(struct State, arr));
//	printf("%d ", OFFSETOF(struct State, n));
//	return 0;
//}
#include <assert.h>

enum state
{
	win,
	bat
};

int my_atoi(char* str)
{
	assert(str);
	long long num = 0;
	while (*str==' ')
	{
		str++;
	}
	int p = 0;
	if (*str == '-')
	{
		p = -1;
		str++;
	}
	else if (*str == '+')
	{
		p = 0;
		str++;
	}
	if ((*str) >= '0' && (*str) <= '9')
	{
		while ((*str) >= '0' && (*str) <= '9')
		{
			num *= 10;
			num += (*str) - '0';
			str++;
		}
	}
	else
	{
		return 0;
	}
	if (num<INT_MIN || num>INT_MAX)
	{
		return 0;
	}
	if (p == -1)
	{
		num = -num;
	}
	return (int)num;
}

int main()
{
	char arr[100] = { 0 };
	gets_s(arr, 100);
	int ret = my_atoi(arr);
	printf("%d ", ret);
	return 0;
}